public abstract class Device {
    private boolean ison;
    public INHOMELOC room;

    protected Device() {
    }

    public void turn_off(){
    ison=false;
    System.out.println("Je vypnute zariadenie");
    }

    public void turn_on(){
    ison=true;
    System.out.println("Je vypnute zariadenie");
    }

    public Device(INHOMELOC room) {
        this.room = room;
    }

    public boolean isIson() {
        return ison;
    }

    public void setIson(boolean ison) {
        this.ison = ison;
    }
    public void setLocation(INHOMELOC room) {
        // Code to set the location of the device
    }

}

public class Dom {
    private int pocetzariadeni;
    private Device[] zariadenia;

    public Dom() {
        this.zariadenia=new Device[10];
        this.pocetzariadeni=0;

    }
    public void addDevice(Device tentoDevice){
        zariadenia[pocetzariadeni]=tentoDevice;
        pocetzariadeni++;
    }
    public void delteDevice(Device tentoDevice){
        for (int i = 0; i < pocetzariadeni; i++) {
            if (zariadenia[i] == tentoDevice) {
                for (int j = i; j < pocetzariadeni - 1; j++) {
                    zariadenia[j] = zariadenia[j + 1];
                }
                zariadenia[pocetzariadeni - 1] = null;
                pocetzariadeni--;
                break;
            }
        }
    }
}


public class Light extends Device implements shineable,Switchable{
    public Light(INHOMELOC room) {
        setLocation(room);

    }


    @Override
    public void switch_device() {
    if (isIson()==false){
        setIson(true);
    }else{
        setIson(false);
    }
    }

    @Override
    public void shine() {
    System.out.println("Svietim");
    }


}


public class Rekuperacia extends Device implements Switchable {
    private static Rekuperacia instance;

    public static Rekuperacia getInstance() {
        if (instance == null) {
            instance= new Rekuperacia();
        }
        return instance;

    } //Signleton

    @Override
    public void switch_device() {

    }

    public Rekuperacia() {
        setLocation(INHOMELOC.TECHNICKA);
        System.out.println("Je v technickej miestnsoti");

    }
}


import java.lang.reflect.Type;
import java.util.List;

public class ControlPanel <Type extends Switchable> {
    private List<Type> devices;

    public ControlPanel(List<Type> devices) {
        this.devices = devices;
    }
    public void switchAll() {
        for (Type device : devices) {
            device.switch_device();
        }

    }
}
